Панель приказов и кнопки на ней - это только интерфейс управления для игрока?
да. это все кнопки. итемы - тоже кнопки. иконка неактивного рабочего - кнопка. кнопки миникарты- кнопки. иконки героев - кнопки. кнопки меню, квест и альянс, журнал - кнопки.
кратко
кнопками являются здания, технолошки, абилки - на панеле приказов. даже когда вы заказываете в здании, в очередь тренировки/исследования встают кнопки юнитов, исследования <= нажав на них можете отменить. кнопками являются и юниты у транспорта (нажав на кнопку юнита, вы можете выкинуть его из транспорта), или когда выделен отряд (кнопки переключения). даже есть кнопка сворачивания мутиборда, ползунок у scroolbar/slider - это же кнопка. checkbox (кнопка с флагом), popupmenu (всплывающее окно), editbox (поле редактирования/ввода текста) и др - эти типы фреймов тоже действуют по типу кнопки.
а все остальное - это уже иконки, модель часов, полоска опыта, полоска жизни. Горячие кнопки напрямую связаны с кнопками, если они скрыты, то значит, ими нельзя воспользоваться.
local location loc=GetUnitLoc(GetEnumUnit())
local location tcLoc=GetUnitLoc(udg_topot_caster)
local real a=AngleBetweenPoints(tcLoc, loc)
call SetUnitX(GetEnumUnit(),GetLocationX(loc) +CosBJ(a) * 10.00 )
call SetUnitY(GetEnumUnit(),GetLocationY(loc) +SinBJ(a) * 10.00 )
call RemoveLocation(tcLoc)
call RemoveLocation(loc)
set tcLoc=null
set loc=null
конфликтуют со стандартными снарядами: missle атаки, способностей и прочего. (они не достигают визуально цели и останавливаются в исходной позиции юнита до смещения)
Ну так всегда было... когда делают блинк через SetUnitXY, то он перестаёт эвейдить снаряды, это давно известная проблема. В ряде случаев фиксится хайдом юнита.
Pingvinromeo, проблема в том что ты фигню творишь
если спел применён в точку то точка есть
перемещение это 1 действие
за это время точка не исчезнет
короче пруфы того что не работает
3 - либо в редакторе объектов в разделе "характеристики" менять стартовое хп и ману, либо на карте открываешь юнита и ставишь ему 100% хп.
2 - триггерами. Событие - юнит умирает, условие - юнит нейтрально-враждебный (какое надо условие - такое и поставишь), действие - создаёшь переменную, даёшь ей рандомное значение, потом создаёшь предмет, в зависимости от числа. Как это делается - читай статьи.
1 - ты имеешь в виду, что он не появляется вместо "случайного моба"?
Вроде бы удалось решить проблему самостоятельно. Ошибка действительно была элементарной - идентификатор не устраивал введённый туда заглавный символ, а я не знал об этом. Простите за беспокойство.
После создания, погодный эффект нужно занести в переменную и включить его (там есть действие). Когда нужно изменить погодный эффект, то старый нужно удалить, для этого мы его занесли в переменную.
В РО у способности есть есть строка Графика - Анимации, там указываешь ту, что хочешь видеть при её использовании. Например, для Огненных стрел Жрицы Луны используется анимация attack, для Молота бурь Горного Короля анимация spell throw, а для Покоя Хранителя Рощи анимация spell channel. Для двух последних способностей в РО указывается два слова, оба слова через пробел не работают, например, указывай отдельно spell и throw или spell и channel. Если у модели нет анимаций с таким названием, но есть анимации, которые содержат одно из этих слов, то будут проигрываться они. Там ещё есть тонкости, о которых долго печатать надо, да и они тебе могут не понадобиться. Пробуй.
То, что я скинул -- это тебе и GUI, и MUI, и все 33 удовольствия. Даже рассеиванием рассеивается, прикинь? Не то, что все эти ваши триггерные баффы, которые ещё и не отслеживаете часто.
После ворот на арене ставишь одну область, в клетке делаешь вторую область. Создаёшь триггер с событием Generic unit Enters Rect (первая область), там первое действие в категории Декорация - Open/Close Gate вроде, следующее действие в категории Отряд второе в списке, там выбираешь вторую область, которая в клетке, а действие указываешь Боевая единица - Move (Picked unit) instantly to (первая область).
Группы юнитов + хэш или структуры. При касте спелла берешь кастера, берешь его ID, проверяешь не записана ли группа в какой-либо из ячеек. Если нет - создаешь группу и записываешь её в ячейку. При смерти юнита делаешь проверку не записана ли по его ID группа юнитов - если записана - удаляешь его и проверяешь количество юнитов в группе и если оно равно 0 - удаляешь группу. Естественно хэш тоже чистишь всюду где нужно.
Это звучит как "Сделайте мне пожалуйста систему формаций". Чтобы научить тебя как это сделать придётся потратить несколько десятков часов. И тут 2 варианта: либо ты будешь читать статьи и выучишь всё сам, либо обращайся к отдельным пользователям и проси о приватных, платных, уроках в частном порядке.
Вопрос вообще ни о чём. То, о чём ты спрашиваешь делается за 20-30 минут + несколько часов на всякие плюшки и дебаг (в худшем случае).
function Trig_d_Actions takes nothing returns nothing
set udg_H = InitHashtable()
set udg_Dest[1] = gg_dest_LTcr_0000
call TriggerRegisterDeathEvent( gg_trg_t, udg_Dest[1] )
endfunction
//===========================================================================
function InitTrig_d takes nothing returns nothing
set gg_trg_d = CreateTrigger( )
call TriggerAddAction( gg_trg_d, function Trig_d_Actions )
//Map Initialization
endfunction
function T takes nothing returns nothing
local widget w = GetTriggerDestructable()
local real x = GetWidgetX(w)
local real y = GetWidgetY(w)
local itempool ItemPool = CreateItemPool()
local item i
local unit u = LoadUnitHandle(udg_H, StringHash("System"), StringHash("UNIT"))
call ItemPoolAddItemType(ItemPool, 'phea', 60)
call ItemPoolAddItemType(ItemPool, 'pman', 40)
set i = PlaceRandomItem(ItemPool, x, y)
call DestroyItemPool(ItemPool)
call UnitAddItem(u, i)
set ItemPool = null
set i = null
set u = null
endfunction
//===========================================================================
function InitTrig_t takes nothing returns nothing
set gg_trg_t = CreateTrigger( )
call TriggerAddAction( gg_trg_t, function T )
endfunction
function Trig_vsd_Actions takes nothing returns nothing
call SaveUnitHandle(udg_H, StringHash("System"), StringHash("UNIT"), GetOrderedUnit())
endfunction
//===========================================================================
function InitTrig_vsd takes nothing returns nothing
set gg_trg_vsd = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_vsd, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER )
call TriggerAddAction( gg_trg_vsd, function Trig_vsd_Actions )
endfunction
При осмотре карты тоже не совсем понял почему игра перестает строительство. Как решение, ты можешь даммику строительства поменять расу на нежить, таким образом уже здание само будет достраиваться.
Поскольку у тебя на карте при беглом осмотре юнитов строителей я не заметил, то выше указанное решение как раз то что нужно тебе.
П.С.
Под какую версию игры рассчитана данная карта?
Конечно можно! Для этого надо в поле "авторы" ресурса указать автора оригинального материала и поместить ссылку на оригинальный материал в соответствующее поле.
Пример: xgm.guru/p/cp2077/better-minimap
Если вы как-либо модифицировали этот материал, в поле "авторы" можно через | дописать и свой никнейм.
Стоит помнить, если автор обратится к нам с просьбой удалить ресурс - нам придется снять такой ресурс с публикации и убрать видимость. Но это не будет считаться нарушением правил.
Важно: Это касается только открытых материалов. Если вы его купили и/или там есть явный запрет на распространение - не стоит загружать такие материалы к нам на сайт без уточнения у Администрации.
По поводу материалов, используемых внутри модов или карт - нужно завести спец. раздел/квест/титры и перечислить их там в нужных категориях.
чет все равно не понимаю, как сделать проверку
юнит получил урон, если юнит = юнит из переменной UnitsBuffed - запустить триггер?
Как вместо индекса указать любой юнит из переменной?
Получилось, вот такая штука нужна была как на втором скрине, все равно оставлю тему, мб кому пригодится еще
quq_CCCP, извлёк. Теперь мне засунуть этот код в копию этой карты, которую в редакторе кампаний добавить в кампанию и сохранить? Вроде как получается то же самое, как при сохранении карты в JNGP отдельно, а потом её добавлении в кампанию.
P. S. Цвета персонажей слетели при этом способе, а они очень важны. Хотя так код и правда работает.
P. P. S. Сначала карта запускалась, но цвета юнитов менялись, код срабатывал. Потом решил повторить это(замену файла war3map.j), внеся изменения в простые триггеры, но карта уже не запускалась.
P. P. P. S. Короче, разобрался в причине того, что карта не запускалась, я её с рабочего стола загружал и сохранял. Видимо из-за русских символов в пути не получалось. Если карта лежит в папке maps, то нормально. Но проблема с другими цветами персонажей, а точнее красным цветом, так и осталась. В итоге решил не мучиться, а сделать всё обычными триггерами.
Кстати, из триггера убрали элементы vjass, код стал таким, но всё равно не сохранялся в кампании:
globals
timer alp_t = CreateTimer()
integer alp_m = 0
unit array alp_a
boolean array alp_f
integer array alp_alpha
real array alp_speed
real array alp_time
endglobals
function TimeUnitAlpha takes nothing returns nothing
local integer i = 0
loop
set i = i + 1
exitwhen i>alp_m
if GetWidgetLife(alp_a[i])>0.405 and alp_time[i]>0 then
if alp_f[i] then
set alp_alpha[i] = alp_alpha[i] + R2I(alp_speed[i])
else
set alp_alpha[i] = alp_alpha[i] - R2I(alp_speed[i])
endif
call SetUnitVertexColor(alp_a[i],255,255,255,alp_alpha[i])
set alp_time[i] = alp_time[i] - 0.05
else
if alp_f[i] then
call SetUnitVertexColor(alp_a[i],255,255,255,255)
endif
set alp_a[i] = alp_a[alp_m]
set alp_f[i] = alp_f[alp_m]
set alp_time[i] = alp_time[alp_m]
set alp_alpha[i] = alp_alpha[alp_m]
set alp_speed[i] = alp_speed[alp_m]
set alp_m = alp_m - 1
if alp_m==0 then
call PauseTimer(alp_t)
endif
endif
endloop
endfunction
Принимает : (Юнита, Длительность , начальная прозрачность , макс. прозрачности за время , Появится/Исчезнуть )
call AddUnitAlpha(Caster,3,0,255,true) = Появится за 3 секунды
call AddUnitAlpha(Caster,3,255,255,false) = Исчезнет за 3 секунды
function AddUnitAlpha takes unit A,real TIMES,integer ALPHA,integer MAX_ALPHA,boolean F returns nothing
set alp_m = alp_m + 1
set alp_a[alp_m] = A
set alp_f[alp_m] = F
set alp_time[alp_m] = TIMES+0.10
set alp_alpha[alp_m] = ALPHA
set alp_speed[alp_m] = MAX_ALPHA/TIMES*0.05
if alp_m==1 then
call TimerStart(alp_t,0.05,true,function TimeUnitAlpha)
endif
endfunction
Вджасс это дополнение к обычному джассу, у себя ты можешь видеть строки объявления библиотеки, продвинутые комментарии и статические константные переменные
В том и дело что ОТВЕТА - НЕТ.Способность я НЕ кастую.Я проверяю - есть ли она у героя, и какого она уровня. Мне нужна ПАССИВНАЯ, способность. В данном случае моя способность блокирует часть урона, в зависимости от уровня, она не является пустышкой. Всё. Теперь я в тригере делаю проверку - что способность у героя есть. И если она есть, то на каждом 20-м ударе по герою, будет добавлятся способность - защита +10, или больше, взависимости от уровня способности, и затем через 30 секунд удалятся.
Я не спрашивал как кастовать скилл, и как с ним работать.
Я спросил другое:
ПОЧЕМУ? Почему способность сама по себе работает(ОНА ПАССИВНАЯ, и она работает), а обращение к ней тригера(ПРОВЕРКА того что, способность у героя есть), даже если сам тригер не активируется(СОБЫТИЕ, ещё ни разу не произошло, или галочка "изначально включен" убрана), ломает игру?
Прочитай внимательно всё что я писал пожалуйста, у меня просто ощущение что ты не всё прочитал, и не всё скрины посмотрел.
В общем и целом. Подвожу итоги:
Проблема оказалась конкретно в способности. Я так посмотрел, она видимо каким-то образом забаговалась.
Она была сделана на основе способности "каменные доспехи", но конкретно у этой способности почему-то изначальная раса была "наги". Т.е. это уже странно, потому что эта способность изначально от "ночных эльфов". Кроме этого, я отличий от стандарта в ней никаких не видел.
Я ее удалил, создал абсолютно такую же способность, и она работает, всё запускается. Скилл(тригерный) я сделал ровно так как и хотел, никакой ошибки в нём нет и не было в помине, о чем я в принципе подозревал с самого начала. Не знаю с чем связать этот баг, поэтому в принципе вопрос закрываю. Ответ на него я нашёл сам: это баг редактора.
Других вариантов я не вижу.
» WarCraft 3 / Текстура земли порча
» WarCraft 3 / Скрыть все на панели
» WarCraft 3 / Warcraft Hero Legends 0.4.1 alpha5
» WarCraft 3 / SetUnitX,Y
» WarCraft 3 / Триггерное заклинание не работает, как нужно.
» WarCraft 3 / не меняет хп мобу
» WarCraft 3 / Где лежит модель юнита?
» WarCraft 3 / Изменение погоды
» WarCraft 3 / Война Азерота 4
» WarCraft 3 / Война Азерота 4
» WarCraft 3 / Война Азерота 4
» WarCraft 3 / Заклинание покой
» WarCraft 3 / legion arena
» WarCraft 3 / www
» Администрация XGM / Оффтопка
» WarCraft 3 / разділяй і враждуй
» WarCraft 3 / Дайте русификатор!
» WarCraft 3 / Тригерное создание юнита
» WarCraft 3 / Координаты предмета
» WarCraft 3 / Что с Хайвом?
» Администрация XGM / Не сбрасывает счётчик новых комментариев
» WarCraft 3 / Не запускается карта. Jass
» WarCraft 3 / Ищу карту)